New Relic Code Level Metrics を Go 言語でやってみる
IDE 上で Github や Jira と連携しコミュニケーションや New Relic Errors Inbox と連携して障害対応ができる New Relic CodeStream に新しく CodeLevelMetrics という IDE 上で New Relic APM で取得した Metrics を表示できる機能がリリースされましたので実際に Go 言語を使って試してみます。
現在は Java,Python,Ruby,.NET,Go
の各種 New Relic APM Agent で対応しているようです
https://newrelic.com/jp/blog/how-to-relic/troubleshooting-settings https://newrelic.com/blog/nerdlog/codestream-code-level-metrics
やってみる
今回の成果物は皆様が体験いただけるように簡単な RESTAPI を用意して触れる Github リポジトリを用意しました。 https://github.com/yuzujoe/code-level-metrics-example
今回は以下の環境で実施しておりますのでもし環境など違う場合はご自身の環境に合わせてご利用ください。
- M1 Max Macbook pro
- Go 1.19.2
- Docker 20.10.11
New Relic アカウントの登録
まず今回は New Relic アカウントがないと始まりませんので New Relic のアカウントがない場合はアカウント作成の作業からです。 New Relic は無料で登録することができて月間データ転送量 (TDP といいいます) 100GBまででしたら1ユーザー APM や Browser などの基本的な全ての機能を無料で利用できる形になっていますので無料で利用が可能です!
以下の URL から登録が可能ですので登録をしましょう。
Github リポジトリのクローン
Github リポジトリのクローンおよび fork をしていただきます。 普段 gh コマンドを利用していますので gh を利用しますが普段お使いのものをご利用ください。
Github のリポジトリはこちらです https://github.com/yuzujoe/code-level-metrics-example
gh repo clone yuzujoe/code-level-metrics-example
これで準備が整いました。
アプリケーション起動
今回は docker compose を用意していますので docker compose でアプリケーションの起動をします。
8000 番ポートで起動しており localhost:8000/example
の URL でリクエストすると 200 レスポンスが返ってくるだけのアプリケーションになっています。
今回は New Relic APM を登録するために New Relic のライセンスキーが必要ですのでそちらの取得をします。 New Relic アカウントは既に登録済みかと思いますので New Relic の UI から左下のアイコンから API Keys を選択すると以下のような画面に遷移するかと思います。
今回は INGEST LICENSE
のものを使いますのでそちらの右側の...アイコンをクリックしたメニューから Copy key
を選択するとライセンスキーの取得ができます。
この取得したライセンスキーを環境変数として利用します
export NEW_RELIC_LICENSE_KEY=<取得したライセンスキー> # 必要に応じて go mod download を実施 go mod download # コンテナのビルドと起動 docker compose up --build
こちらで正常に起動されたアプリケーションが New Relic の UI に表示されている場合は成功です。 このようになっていると思います。
CodeStream セットアップ
CodeStream の連携をしていきます。 私は Jetbrains 製品を使っているので Jetbrains 前提で進めますが VSCode などでも大きくは変わりませんのでドキュメントを読み進めていただければセットアップは可能かと思います。
Plugins から CodeStream と検索に打っていただくと New Relic CodeStream が出てきますのでそのプラグインをインストールします。
プラグインを連携した状態で IDE を開くと CodeStream というのが選択できます。
そちらを選択すると Sign Up を求められますが今回は New Relic を使って Sing Up をしていきます。
ここで user API key
を入力してくださいと求められますが先ほど使用していたライセンスキーと違って USER タイプの API Key を作成してもらってそのキーを使用します。
こちらでアカウントの作成が出来ましたので実際に New Relic APM と連携していきます。
New Relic CodeStream 連携
実際に CodeStream が New Relic APM を認識できるようにする必要がありますが方法として Github などのリポジトリ情報を登録してあげます。 APM の画面から登録する方法と環境変数で設定する方法がありますがどちらも一度設定してしまえばのちに設定する必要がないので好きな方法で設定していただけたらと思います。(環境変数が推奨になっています)
https://docs.newrelic.com/docs/codestream/how-use-codestream/performance-monitoring/#env-var
これでセットアップは完了しましたので実際に起動したアプリケーションにリクエストをかけてみると負荷状況やメトリクスなどが New Relic に転送されそれを IDE 上で確認できるようになります。今回は k6 という負荷テストツールを用意していますので大きめの負荷をかけて検証したい場合はそちらを使ってみることをお勧めします。
もしリクエストをかけても表示されない場合はコンテナの再起動や IDE の再起動などをお試しください。以下のような表示がされれば成功です。
これで IDE 上でメトリクスが確認できるようになりました。メトリクスの表示期間は30分固定の様で今のパフォーマンスを知るには十分な時間が確保されていますね。 まだまだ他に何かできないか使ってみて機会があればご紹介したいと思います。